package com.mdc.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

/**
 * @author 程序猿DD
 * @version 1.0.0
 * @date 16/3/17 下午6:44.
 * @blog http://blog.didispace.com
 */
//@Service
@Service("userService")
public class UserServiceImpl implements UserService/**/ {
    @Autowired
    //注意1：这里注入的JdbcTemplate所用到的数据源与
    //      外部用到的“事物处理”所用到的数据源必须一致，
    //      “事物处理”才会生效；
    //      为了避免不一致，“事务处理”最好直接施加在方法之前
    //
    //注意2：此处注入JdbcTemplate，因为有三个，因此需要采取下面两种措施之一：
    //  (1) 用@Primary注解在DataSourceConfig中标明哪个JdbcTemplate是最主要的；
    //  (2) 用@Qualifier注解在此处明确标明使用哪个JdbcTemplate实例（也就是哪个是合格者）
    //@Qualifier("primaryJdbcTemplate")
    private JdbcTemplate jdbcTemplate;

    @Override
    public void create(long id, String name, Integer age) {
        jdbcTemplate.update("insert into USER(id, NAME, AGE) values(?, ?, ?)", id, name, age);
    }

    @Override
    public void deleteByName(String name) {
        jdbcTemplate.update("delete from USERS where NAME = ?", name);
    }

    @Override
    public int getAllUsers() {
        return jdbcTemplate.queryForObject("select count(1) from USER", Integer.class);
    }

    @Override
    public void deleteAllUsers() {
        jdbcTemplate.update("delete from USERS");
    }
}